查看原文
其他

这3个苹果 0day 漏洞竟然是通过测试 DropBox 发现的

Lawrence Abrams 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

编译:360代码卫士团队

Dropbox 公司雇佣某个安全公司执行红队测试时,怎么也不会想到会发现苹果产品中不止影响 Dropbox 一家公司的多个 0day 漏洞。

Dropbox 公司在博客文章中解释了如何例行对安全系统及策略的效率进行测试。在最近的一次测试活动中,Dropbox 的目标是测试系统检测并追踪成功的数据泄露的能力。

Dropbox 公司的安全负责人 Chris Evans 表示,“我们投入大量精力提升 Dropbox公司的加固、检测、警告和响应能力。即使攻击者闯入并在不触及警告的情况下访问了我们环境中的多个系统,我们有很多工具可以追踪到活动后的利用情况。那么我们怎么知道我们表现得不错呢?这就要说到我们最近开展的攻击测试了。我们的测试目标包括衡量检测和警告计划的稳定性以及团队响应数据泄露的情况。找到闯入 Dropbox 的新方法也在考虑范围之内,但即使没找到任何新方法,我们也会通过自己植入恶意软件的方法(在不触发检测团队和响应团队的情况下)模拟数据泄露的效果。”

然而,他们没想到的是,安全合作伙伴 Syndis 找到了苹果软件中的多个 0day 漏洞。当结合使用这些漏洞时,仅通过访问恶意网站的方式就能在易受攻击的 macOS 计算机上远程执行命令。

2月19日,Syndis 和Dropbox 公司将漏洞告知苹果公司,后者在1个月的时间内修复并发布于2018年3月29日的安全更新中。

结合使用3个 0day 漏洞实现 RCE

远程代码执行漏洞被评估为“严重”漏洞,因为它们可导致攻击者远程在易受攻击的计算机上运行任意命令。

当 Syndis执行测试时,发现可结合使用三个先前未知的漏洞实施两个阶段的利用,在易受攻击的 macOS 计算机上远程执行命令。

第一个漏洞 (CVE-2017-13890) 存在于负责列出可由 Safari 打开的安全项目的 macOS CoreTypes.bundle 中。.smi (Self-Mounting Images) 被错误地分配给 CoreTypes,因此可被 Safari 打开。用户只要访问恶意网页,攻击者就能将磁盘图像挂载到用户的 macOS 计算机中。


第二个漏洞 (CVE-2017-4176) 和磁盘图像挂载到 macOS 的方式有关。当创建自我挂载图像时,攻击者能利用可引导的卷工具 bless 及其–openfolder 参数触发某个特定的文件夹在卷挂载时打开。文档中未披露的是,如果你指定一个 .bundle 文件(即打包为目录的应用程序)作为–openfolder 的参数,它就会导致应用程序启动。


攻击者能结合使用这两个漏洞使得图像自动挂载且应用启动,但 Gatekeeper 仍然会阻止其执行。

第三个漏洞 (CVE-2018-4175) 是存在于 LaunchServices 中的 Gatekeeper 绕过。使用合法签署的 Terminal.app 并修改其 Info.plist 就能注册一个新的关联文件扩展,Syndis 公司就能够在脚本使用这个新扩展时绕过 Gatekeeper。


在演示中可看到通过使用由 Syndis 创建的两个阶段攻击能够最终导致通过访问恶意远程站点的方式打开 Calculator 应用。

文章指出,“Syndis 能够结合利用这三个漏洞在分两个阶段的利用中实现任意代码执行,方法就是诱导用户通过 Safari 访问特殊构造的网页。第一个阶段的利用包括对 Terminal app 的更改,它被注册为新文件扩展 (.workingpoc) 的工具。另外,它还会包含一个名为“test.bundle”的空文件夹。该空文件夹被指定为默认的‘openfolder’,在无需提示的情况下自动打开 /Applications/Terminal.app。第二个阶段包含带有扩展‘.workingpoc’的未签名 shellscript,随后在无需提示的情况下在运行 Terminal 应用中执行。”

2018年3月发布漏洞更新时,多数用户应该已经安装。如未安装,用户应当安装所有的月度安全更新以防遭此类漏洞的攻击。



推荐阅读

“360代码卫士”协助苹果公司修复多个高危漏洞,获官方致谢

速度打补丁!苹果刚刚修复多个严重漏洞


原文链接

https://www.bleepingcomputer.com/news/security/how-a-security-test-for-dropbox-revealed-3-apple-zero-day-vulnerabilities/


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存